<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
<title>计算属性和侦听器</title>
<meta name="description" content="">
<meta name="keywords" content="">
<link href="" rel="stylesheet">
<script src="https://cdn.jsdelivr.net/npm/vue/dist/vue.js"></script>
</head>
<body>
    <div id="app">
        <p> Original message : " {{ message }}"</p>
        <p>Computed reversed message : " {{ reverseMessage }}"</p>
        <p>Computed reversed message : " {{ reverseMessage1() }}"</p>
        
    </div>
    <div id="demo">
            {{ fullName }}
    </div>
    <div id="watch-example">
      <p>
        Ask a yes/no question:
        <input v-model="question">
      </p>
      <p>{{ answer }}</p>
    </div>
    <script src="//cdn.jsdelivr.net/npm/axios@0.12.0/dist/axios.min.js"></script>
    <script src="//cdn.jsdelivr.net/npm/lodash@4.13.1/lodash.min.js"></script>
    <script>
        var watchExampleVM = new Vue({
          el: '#watch-example',
          data: {
            question: '',
            answer: 'I cannot give you an answer until you ask a question!'
          },
          watch: {
            // 如果 `question` 发生改变，这个函数就会运行
            question: function (newQuestion, oldQuestion) {
              this.answer = 'Waiting for you to stop typing...'
              this.debouncedGetAnswer()
            }
          },
          created: function () {
            // `_.debounce` 是一个通过 Lodash 限制操作频率的函数。
            // 在这个例子中，我们希望限制访问 yesno.wtf/api 的频率
            // AJAX 请求直到用户输入完毕才会发出。想要了解更多关于
            // `_.debounce` 函数 (及其近亲 `_.throttle`) 的知识，
            // 请参考：https://lodash.com/docs#debounce
            this.debouncedGetAnswer = _.debounce(this.getAnswer, 500)
          },
          methods: {
            getAnswer: function () {
              if (this.question.indexOf('?') === -1) {
                this.answer = 'Questions usually contain a question mark. ;-)'
                return
              }
              this.answer = 'Thinking...'
              var vm = this
              axios.get('https://yesno.wtf/api')
                .then(function (response) {
                  vm.answer = _.capitalize(response.data.answer)
                })
                .catch(function (error) {
                  vm.answer = 'Error! Could not reach the API. ' + error
                })
            }
          }
        })
        var demo = new Vue({
            el:'#demo',
            data : {
                firstName:'Foo',
                lastName: 'Bar',
            },
            computed: {
                fullName: {
                    get:function(){
                    return this.firstName + ' ' + this.lastName
                    },
                    set:function(newValue){
                        var names = newValue.split(' ')
                        this.firstName = names[0]
                        this.lastName = names[names.length - 1]
                    }
                }
            }
        })


        var app = new Vue({
            el:'#app',
            data: {
                message : 'Hello',

            },
            methods:{
                reverseMessage1: function(){
                    return this.message.split('').reverse().join('')
                }
            },
            computed:{
                reverseMessage : function(){
                    return this.message.split('').reverse().join('')
                }
            }
        })
    </script>
</body>
</html>